package think.in.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/**
 * 集合类型依赖查找Bean配置<br/>
 * Bird 根类<br/>
 * ->Ratitae 平胸总目 包括一类善走而不能飞的鸟，如鸵鸟<br/>
 * ->Impennes 企鹅总目 包括一类善游泳和潜水而不能飞的鸟<br/>
 * ->Carinatae 突胸总目，包括两翼发达能飞的鸟，绝大多数鸟类属于这个总目<br/>
 * &nbsp;&nbsp;&nbsp;&nbsp;->Natatores 游禽 喜欢在水上生活，脚向后伸，趾间有蹼，有扁阔的或尖嘴，
 * 善于游泳、潜水和在水中掏取食物，大多数不善于在陆地上行走，但飞翔很快<br/>
 */
public class ListableDemoConfig {
    public static List<String> beanNames = Arrays.asList("ratitae","impennes","carinatae","natatores");
    @Bean
    public Bird ratitae(){
        return new Ratitae();
    }

    @Bean
    public Bird impennes(){
        return new Impennes();
    }

    @Bean
    public Bird carinatae(){
        return new Carinatae();
    }

    @Bean
    public Bird natatores(){
        return new Natatores();
    }

    public interface Bird{

    }
}
///**
// * 平胸总目 包括一类善走而不能飞的鸟，如鸵鸟
// */
//@Component
//class Ratitae implements ListableDemoConfig.Bird {
//}

/**
 * 企鹅总目 包括一类善游泳和潜水而不能飞的鸟
 */
@Component
class Impennes implements ListableDemoConfig.Bird {
}

/**
 * 突胸总目，包括两翼发达能飞的鸟，绝大多数鸟类属于这个总目
 */
@Component
class Carinatae implements ListableDemoConfig.Bird {
}

/**
 * 游禽 喜欢在水上生活，脚向后伸，趾间有蹼，有扁阔的或尖嘴，善于游泳、潜水和在水中掏取食物，大多数不善于在陆地上行走，但飞翔很快
 */
@Component
class Natatores extends Carinatae {
}

